"""
URL configuration for travel project.

The `urlpatterns` list routes URLs to views. For more information please see:
    https://docs.djangoproject.com/en/4.2/topics/http/urls/
Examples:
Function views
    1. Add an import:  from my_app import views
    2. Add a URL to urlpatterns:  path('', views.home, name='home')
Class-based views
    1. Add an import:  from other_app.views import Home
    2. Add a URL to urlpatterns:  path('', Home.as_view(), name='home')
Including another URLconf
    1. Import the include() function: from django.urls import include, path
    2. Add a URL to urlpatterns:  path('blog/', include('blog.urls'))
"""
# 导入了 Django 自带的管理后台相关模块。通过 admin.site.urls 可以将项目的管理后台页面的 URL 路径进行配置，
# 使得管理员能够通过特定的 URL 访问到管理后台进行各种数据管理、用户管理等操作。
from django.contrib import admin
# 引入了 Django 的 URL 路由相关的核心函数和装饰器。path 函数用于定义具体的 URL 路径与对应视图的映射关系，
# 而 include 函数则用于将其他应用（比如项目中的各个子应用模块）下的 URL 配置模块包含进来，实现 URL 配置的模块化和分层管理，
# 方便大型项目中不同功能模块分别管理各自的 URL 路由规则。
from django.urls import path,include
# 导入项目的配置对象，这里后续主要用于获取与媒体文件相关的配置信息（如 MEDIA_URL 和 MEDIA_ROOT），
# 确保 URL 配置能够与项目整体的设置相匹配，特别是在处理媒体文件访问路径的设置时会用到这些配置项的值。
from django.conf import settings
# 引入了一个用于配置静态文件（在这里实际用于配置媒体文件在开发环境下的访问方式）的函数 static，
# 它可以方便地将媒体文件的 URL 路径与实际存储位置进行关联，使得在开发过程中能够正确地通过浏览器访问到用户上传的媒体文件等内容。
from django.conf.urls.static import static
# 导入了一个通用的视图类 RedirectView，它用于实现简单的 URL 重定向功能，比如将某个 URL 路径请求重定向到另一个指定的 URL 路径，
# 在这里主要用于将项目根目录（空字符串 '' 表示的路径）的请求重定向到 /app/ 路径下，实现默认首页的跳转设定。
from django.views.generic import RedirectView

urlpatterns = [
# 定义了访问 Django 项目管理后台的 URL 路径规则。当用户在浏览器中访问以 /admin/ 开头的 URL 时，
# Django 会将请求交给 admin.site.urls 所关联的视图和功能逻辑进行处理，也就是进入到 Django 自带的管理后台界面，
# 管理员可以在这里进行诸如数据库表数据的增删改查、用户权限管理等操作，前提是需要根据项目的用户认证和授权配置进行正确登录。
    path('admin/', admin.site.urls),
# 使用 RedirectView 创建了一个重定向规则，当用户访问项目的根路径（即 URL 为空字符串 '' 时），会自动将请求重定向到 /app/ 路径。
    # 这常用于设置项目的默认首页跳转逻辑，引导用户进入到应用的主要功能页面所在的路径下，
    # 例如可能 app 应用下的页面是项目面向用户展示内容的核心部分，所以将根路径请求重定向过去。
path('', RedirectView.as_view(url='/app/')),
    # 通过 include 函数将名为 app 的应用（这应该是项目自定义开发的一个功能应用模块）下的 urls 模块（通常是 app 应用目录下的 urls.py 文件）
    # 所定义的 URL 路由规则包含进来。这样，
    # 以 /app/ 开头的后续各种细分 URL 路径就会根据 app.urls 里的具体配置进一步被映射到 app 应用内对应的视图函数或者视图类上，
    # 实现具体功能的请求响应处理，达到模块化管理 URL 路由的目的，方便不同应用各自维护和扩展自己的 URL 规则，使整个项目的 URL 配置结构更加清晰。
    path('app/',include('app.urls'))
]
# 配置媒体文件的访问路径与实际存储位置的对应关系。settings.MEDIA_URL 是在项目配置文件（settings.py）中定义的媒体文件访问的 URL 前缀
# （例如可能设置为 /media/），settings.MEDIA_ROOT 则是媒体文件在服务器端实际存储的根目录路径（比如通过 os.path.join(BASE_DIR,'media')
#  指定的项目根目录下的 media 文件夹）。static 函数会根据这两个配置项的值，
# 将以 MEDIA_URL 开头的请求 URL 映射到对应的 MEDIA_ROOT 目录下的实际媒体文件资源上，
# 使得在开发过程中，用户通过浏览器访问类似 /media/xxx.jpg （假设 xxx.jpg 是用户上传的一张图片文件名）这样的 URL 时，
# Django 能够正确地从 MEDIA_ROOT 所指定的存储位置找到并返回对应的媒体文件内容，方便在网页中展示用户上传的各种媒体资料等。
urlpatterns += static(settings.MEDIA_URL,document_root=settings.MEDIA_ROOT)